<?php
class Autoevaluacion_SeccionesController extends Zend_Controller_Action {
    private $nav;
    private $infoLista;
    private $titulo_gestor = "Gestor de Factores de la Lista";
    private $titulo_nombre = "Nombre de la sección";
    private $titulo_elemento = "Preguntas";
    private $mensaje_preguntas = "No hay preguntas asignadas a esta sección";
    private $tooltip_preguntas = "Gestionar preguntas";
    private $Autoevaluacion_con_factores = array("F", "A", "P");
    private $Autoevaluacion_no_elementos = array("A", "P");

    public function init() {
        parent::init();
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $this->infoLista = $sesionListas->infoLista;
        if(empty($this->infoLista)) {
            $this->_helper->redirector("ilegal", "error", "default");
        }
        $this->view->infoLista = $this->infoLista;

        $this->nav = new App_Util_Navegacion();
        $titulo_secciones="";
        $titulo_gestor="";
        if($this->infoLista["tipolista"] == "F") {
            $titulo_secciones = "Factores de la lista";
            if (App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_SEDE){
            	$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
                $params=App_Util_SafeUrl::encriptar(array("codproceso"=>$this->infoLista["codproceso"]),true);
                $this->nav->agregar_navegacion("Datos del comité", "/solicitudes/index/autoevaluacion/{$params}");
                $titulo_gestor ="Factores y caracter&iacute;sticas para la autoevaluaci&oacute;n con fines de acreditaci&oacute;n";
                $titulo_secciones = "Factores y Caracter&iacute;sticas";
            }else{
                $this->nav->agregar_navegacion("Listas de factores", "/autoevaluacion/listasfactores/index");
            }
            
        } elseif($this->infoLista["tipolista"] == "C") {
            $this->nav->agregar_navegacion("Listas de encuestas", "/autoevaluacion/completitud/index");
            $titulo_secciones = "Secciones";
        }
        
        $this->nav->agregar_navegacion("{$titulo_secciones} :: {$this->infoLista["nombre"]}");
        
        $this->view->nav = $this->nav;
        
        if(in_array($this->infoLista["tipolista"], $this->Autoevaluacion_con_factores)) {
            $this->view->placeholder("titulo")->set($titulo_gestor);
            $this->titulo_nombre = "Nombre del factor";
            $this->titulo_elemento = "Características";
            $this->mensaje_preguntas = "No hay características asignadas al factor";
            $this->tooltip_preguntas = "Gestionar características";
        }
        $this->view->titulo_nombre = $this->titulo_nombre;
        $this->view->titulo_elemento = $this->titulo_elemento;
        $this->view->mensaje_preguntas = $this->mensaje_preguntas;
        $this->view->tooltip_preguntas = $this->tooltip_preguntas;
        $this->view->Autoevaluacion_no_elementos = $this->Autoevaluacion_no_elementos;
    }

    public function indexAction() {
        
        $detalleLista = new Autoevaluacion_Model_DetalleLista();

        $form = new Autoevaluacion_Form_Seccion();
        $form->getElement("nombre")->setLabel($this->titulo_nombre);
        
        if($this->getRequest()->isGet()) {
            $form->getElement("codlista")->setValue($this->infoLista["codlista"]);
            if ($this->_hasParam("modificar")) {
				$codseccionlista = $this->_getParam("modificar");
				$form->getElement("btnSubmit")->setLabel("Modificar");
				$array_datos = $detalleLista->getSeccion($codseccionlista);
			}
			if ($this->_hasParam("eliminar")) {
				$codseccionlista = $this->_getParam("eliminar");
				try {
					$detalleLista->eliminarSeccion($codseccionlista);
					$this->view->priorityMessenger("El registro se ha eliminado", "success");
					$this->_helper->redirector("index");
				} catch (Exception $e) {
					$this->view->priorityMessenger($e->getMessage(), "error");
				}
			}
                
        } elseif($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $form->getElement("codlista")->setValue($this->infoLista["codlista"]);
                $detalleLista->guardarSeccion($form->getValues());
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
                $form->reset();
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }
        
		$array_datos["seccioncna"] = "S";
		if (App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_SEDE){
		    $array_datos["seccioncna"] = "N";
		}
		$form->populate($array_datos);
        $this->view->form = $form;
        $this->view->datos = $detalleLista->getSecciones($this->infoLista["codlista"]);
    }
    
    public function ingresarpreguntasAction() {
    	$sesionListas = new Zend_Session_Namespace("LISTAS");
    	$codseccionlista = $this->_getParam("codseccionlista");
    	
    	$detalleLista = new Autoevaluacion_Model_DetalleLista();
    	$sesionListas->infoSeccion = $detalleLista->getSeccion($codseccionlista);
    	$this->_helper->redirector("asignadas", "preguntas");
    }
    
    public function ponderacionAction() {
        $codseccionlista = $this->getParam("codseccionlista");
        
        $navs = $this->nav->toArray();
        $this->nav->modificar_navegacion($navs[count($navs)-1]["etiqueta"], "/autoevaluacion/secciones/index");
        $this->nav->agregar_navegacion("Matriz de ponderación", "");
        
        $detalleLista = new Autoevaluacion_Model_DetalleLista();
        if($this->getRequest()->isPost()) {
            try {
				$detalleLista->asignarPonderaciones($this->getRequest()->getPost());
				$this->view->priorityMessenger("Las ponderaciones se han guardado correctamente", "success");
				
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        }
        
        $infoSeccion = $detalleLista->getSeccion($codseccionlista, true);
        
        $this->view->seccion = $infoSeccion;
    }
    
    public function cambiarlistaAction() {
        $listasService = new Autoevaluacion_Model_Listas();
        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
        $actionConfig = Zend_Registry::get("actionConfig");
		
        $datos = $this->getRequest()->getPost();
        
        if ($datos["aprobar"]=="N"){
        	$listas = $actionConfig->LISTA_FACTORES->toArray();
        }else{
        	$listas = $actionConfig->LISTA_FACTORES_ACREDITADA->toArray();
        }
        
        $lalista =  $listas[$sesionSolicitud->tiposolicitud];
        $sesionProceso = new Zend_Session_Namespace("PROCESO");
        $listasService->eliminarLista($sesionProceso->codproceso);
        
        $infoLista = $listasService->getListaActiva("F",$lalista,$sesionProceso->codproceso);
        $codlista = $infoLista["codlista"];
        
        if (!$infoLista){
            $infoLista = $listasService->getListaActiva("F",$lalista,"","",true);
            if ($infoLista){
                 $codlista = $listasService->crearListaActiva("F",$lalista,$sesionProceso->codproceso,$infoLista["codlista"]);
            }else{
                $this->view->priorityMessenger("La plantilla para la generación de los factores no existe.", "error");
                $this->_helper->redirector("index");
            }
        }else{
        	
        }
    	$sesionListas = new Zend_Session_Namespace("LISTAS");
    	$listasService = new Autoevaluacion_Model_Listas();
    	$sesionListas->infoLista = $listasService->getLista($codlista);
    	$sesionListas->infoSeccion = null;
    	$this->_helper->redirector("index", "secciones","autoevaluacion");
    }
    
}//fin de la clase

